Display screens present images in conjunction with televisions, notebook computers, smart phones, virtual or mixed reality gear, and other electronic devices. Many display screens present an image using a two-dimensional grid of picture elements, or pixels, at some native resolution, such as 1920×1080 pixels. Images are therefore formed using a multitude of pixels or points of light that are emitting different colors. These light-emitting pixels are shaped like rectangles. Consequently, rectangular pixels are used to draw both linear curves and non-linear curves that form part of a displayed image. Because of the rectangular shape of pixels and the two-dimensional grid in which pixels are arrayed, vertical and horizontal lines can be presented smoothly on a display screen. Diagonal lines and rounded objects, on the other hand, can appear rough or jagged due to the detectability by the human eye of the rectangular shape of the pixels. This jagged appearance is referred to as being aliased.
Anti-aliasing refers to techniques that reduce, if not eliminate, the jagged appearance. Conventional graphics processing unit (GPU)-based approaches to anti-aliasing are generally dependent upon multisampling in which each pixel is considered to contain “N” subpixels, with “N” being the multisampling factor. To implement multisampled anti-aliasing (MSAA), “N” values are stored for each pixel that is to be displayed, which causes the storage demands for a display screen to increase by “N” times. Furthermore, the size of any associated textures or buffers, like stencil and depth buffers, is also increased by “N” times. This consumes a significant portion of the limited and scarce graphics memory of a computing system. A typical value of the multisampling factor “N” is eight. However, on some of the latest graphics processing hardware, a multisampling factor of 16 is also available, which further doubles the memory requirements for both the display screen and associated textures and buffers.
In addition to adversely impacting memory requirements, multisampling also increases the number of effective pixels that a graphics processing unit (GPU) pipeline has to process. In other words, the number of effective pixels to be processed also grows by “N” times, and rendering performance therefore decreases. The speed at which an image on a display screen can be updated decreases such that the delays become not only apparent to an end-user, but distracting and frustrating as well. Moreover, the extensive use of graphics memory to accommodate the “N” subpixels-per-displayed-pixel prevents an end-user from being able to simultaneously open multiple complicated artworks in a drawing, illustration, or other imaging program—especially if the underlying color space is CMYK, which inherently consumes more memory than an RGB color space. Thus, relying on multisampling to smooth the appearance of an image with anti-aliasing unfortunately increases the demand for expensive graphics memory, limits the number of images that can be accessed simultaneously, and slows graphics processing to a degree that is noticeable by the end-user.
Furthermore, MSAA ceases to function effectively in a subpixel realm. At extreme zoom levels, some curves of an image enter a subpixel realm, which corresponds to when a width of a curve becomes smaller than one pixel at a current zoom display level. In this subpixel realm, MSAA techniques fail and produce images with a poor appearance. One approach to ameliorating the poor appearance involves replicating path geometry several times (e.g., 3-5 times) in the subpixel zoom range and averaging the anti-aliasing data to produce an acceptable appearance. Unfortunately, the increase in the number of geometric paths involved with this approach slows processing to a degree that implementation is unacceptable from a user-satisfaction perspective.
There is another approach in the subpixel realm that first approximates curves to lines and then draws them in anti-aliased manner on a GPU. Unfortunately, the conversion of curves to lines and the use of a specialized technique for the subpixel zoom range—in addition to a technique for the non-subpixel zoom range—breaks resolution independence. This approach also negatively impacts memory consumption because using two techniques involves two different sets of data being resident on the GPU to accommodate when the zoom level changes to and from the subpixel realm. Further, this approach negatively impacts performance because dynamically switching between two techniques, such as by drawing a few paths in displayed artwork with one technique and other paths with another technique, slows the GPU fill rate.
In brief, with conventional anti-aliasing, multisampling is employed to produce multiple subpixels per displayed pixel. With a typical eight-times (8×) multisampling factor, 8× more graphic memory is consumed for a screen buffer, as well as for texture and other supporting buffers. With effectively 8× more pixels to process, the processing time is also significantly increased. Conventional anti-aliasing also uses two different techniques for different zoom ranges: one technique for standard zoom levels and another technique for sub-pixel zoom levels. Employing two different anti-aliasing techniques creates additional problems. For instance, maintaining and processing data for a second approach increases memory requirements and taxes processing resources. Furthermore, transitioning between a standard zoom level and a subpixel realm is not seamless for the end-user experience when different anti-aliasing techniques are used.
Thus, conventional anti-aliasing that is based on multisampling negatively impacts graphics performance and is limited by the demands placed on graphics memory due to the oversampling factor “N.” Moreover, conventional approaches that attempt to extend MSAA into the subpixel realm produce additional visual and performance problems that are apparent to an end-user.